package aplicacion.modelo;

import java.util.Iterator;


public class SpeedyCazador extends FantasmaCazador {
	
	public SpeedyCazador(Speedy fantasma) {
		super(fantasma);
	}
	
	public void actuar() {
		Celda celdaMasProxima = getCeldaMasProximaAPacman();
		if(celdaMasProxima != null)
			getFantasma().moverA(celdaMasProxima.getPosicion());
	}

	private Celda getCeldaMasProximaAPacman() {
		CeldasVecinas arrCeldasVecinas = getFantasma().getCeldasVecinas();
		Iterator<Celda> iterador = arrCeldasVecinas.iterator();
		Celda celdaSiguiente = arrCeldasVecinas.get(0);
		Celda celdaMasProxima = celdaSiguiente;
		double distanciaMinima = Double.MAX_VALUE;
		
		while(iterador.hasNext()) {
			celdaSiguiente = iterador.next();
			
			if (!celdaSiguiente.estaBloqueada() && celdaSiguiente.getPosicion() != getFantasma().getPosicionAnterior()) {
				double distanciaCeldaSiguiente =  celdaSiguiente.getPosicion().distance(getFantasma().getPacman().getPosicion());
				
				if (distanciaCeldaSiguiente < distanciaMinima) {
					distanciaMinima = distanciaCeldaSiguiente;
					celdaMasProxima = celdaSiguiente;
				}
			}
		}
		
		return celdaMasProxima;
	}
}
